home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / AEObjects.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  12.7 KB  |  342 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        AEObjects.p
  3.  
  4.      Contains:    Object Support Library Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1991-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT AEObjects;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __AEOBJECTS__}
  27. {$SETC __AEOBJECTS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC AEObjectsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __OSUTILS__}
  34. {$I OSUtils.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __APPLEEVENTS__}
  37. {$I AppleEvents.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __ERRORS__}
  40. {$I Errors.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __EVENTS__}
  43. {$I Events.p}
  44. {$ENDC}
  45.  
  46.  
  47. {$PUSH}
  48. {$ALIGN MAC68K}
  49. {$LibExport+}
  50.  
  51.  
  52. CONST
  53.                                                                 { ***    LOGICAL OPERATOR CONSTANTS    *** }
  54.     kAEAND                        = 'AND ';                        {   0x414e4420   }
  55.     kAEOR                        = 'OR  ';                        {   0x4f522020   }
  56.     kAENOT                        = 'NOT ';                        {   0x4e4f5420   }
  57.                                                                 { ***    ABSOLUTE ORDINAL CONSTANTS    *** }
  58.     kAEFirst                    = 'firs';                        {   0x66697273   }
  59.     kAELast                        = 'last';                        {   0x6c617374   }
  60.     kAEMiddle                    = 'midd';                        {   0x6d696464   }
  61.     kAEAny                        = 'any ';                        {   0x616e7920   }
  62.     kAEAll                        = 'all ';                        {   0x616c6c20   }
  63.                                                                 { ***    RELATIVE ORDINAL CONSTANTS    *** }
  64.     kAENext                        = 'next';                        {   0x6e657874   }
  65.     kAEPrevious                    = 'prev';                        {   0x70726576   }
  66.                                                                 { ***    KEYWORD CONSTANT     *** }
  67.     keyAECompOperator            = 'relo';                        {   0x72656c6f   }
  68.     keyAELogicalTerms            = 'term';                        {   0x7465726d   }
  69.     keyAELogicalOperator        = 'logc';                        {   0x6c6f6763   }
  70.     keyAEObject1                = 'obj1';                        {   0x6f626a31   }
  71.     keyAEObject2                = 'obj2';                        {   0x6f626a32   }
  72.                                                                 {     ... for Keywords for getting fields out of object specifier records.  }
  73.     keyAEDesiredClass            = 'want';                        {   0x77616e74   }
  74.     keyAEContainer                = 'from';                        {   0x66726f6d   }
  75.     keyAEKeyForm                = 'form';                        {   0x666f726d   }
  76.     keyAEKeyData                = 'seld';                        {   0x73656c64   }
  77.  
  78.                                                                 {     ... for Keywords for getting fields out of Range specifier records.  }
  79.     keyAERangeStart                = 'star';                        {   0x73746172   }
  80.     keyAERangeStop                = 'stop';                        {   0x73746f70   }
  81.                                                                 {     ... special handler selectors for OSL Callbacks.  }
  82.     keyDisposeTokenProc            = 'xtok';                        {   0x78746f6b   }
  83.     keyAECompareProc            = 'cmpr';                        {   0x636d7072   }
  84.     keyAECountProc                = 'cont';                        {   0x636f6e74   }
  85.     keyAEMarkTokenProc            = 'mkid';                        {   0x6d6b6964   }
  86.     keyAEMarkProc                = 'mark';                        {   0x6d61726b   }
  87.     keyAEAdjustMarksProc        = 'adjm';                        {   0x61646a6d   }
  88.     keyAEGetErrDescProc            = 'indc';                        {   0x696e6463   }
  89.  
  90. {***    VALUE and TYPE CONSTANTS    ***}
  91.                                                                 {     ... possible values for the keyAEKeyForm field of an object specifier.  }
  92.     formAbsolutePosition        = 'indx';                        {   0x696e6478   }
  93.     formRelativePosition        = 'rele';                        {   0x72656c65   }
  94.     formTest                    = 'test';                        {   0x74657374   }
  95.     formRange                    = 'rang';                        {   0x72616e67   }
  96.     formPropertyID                = 'prop';                        {   0x70726f70   }
  97.     formName                    = 'name';                        {   0x6e616d65   }
  98.                                                                 {     ... relevant types (some of these are often pared with forms above).  }
  99.     typeObjectSpecifier            = 'obj ';                        {   0x6f626a20   }
  100.     typeObjectBeingExamined        = 'exmn';                        {   0x65786d6e   }
  101.     typeCurrentContainer        = 'ccnt';                        {   0x63636e74   }
  102.     typeToken                    = 'toke';                        {   0x746f6b65   }
  103.     typeRelativeDescriptor        = 'rel ';                        {   0x72656c20   }
  104.     typeAbsoluteOrdinal            = 'abso';                        {   0x6162736f   }
  105.     typeIndexDescriptor            = 'inde';                        {   0x696e6465   }
  106.     typeRangeDescriptor            = 'rang';                        {   0x72616e67   }
  107.     typeLogicalDescriptor        = 'logi';                        {   0x6c6f6769   }
  108.     typeCompDescriptor            = 'cmpd';                        {   0x636d7064   }
  109.     typeOSLTokenList            = 'ostl';                        {   0x6F73746C   }
  110.  
  111. { Possible values for flags parameter to AEResolve.  They're additive }
  112.     kAEIDoMinimum                = $0000;
  113.     kAEIDoWhose                    = $0001;
  114.     kAEIDoMarking                = $0004;
  115.     kAEPassSubDescs                = $0008;
  116.     kAEResolveNestedLists        = $0010;
  117.     kAEHandleSimpleRanges        = $0020;
  118.     kAEUseRelativeIterators        = $0040;
  119.  
  120. {*** SPECIAL CONSTANTS FOR CUSTOM WHOSE-CLAUSE RESOLUTION }
  121.     typeWhoseDescriptor            = 'whos';                        {   0x77686f73   }
  122.     formWhose                    = 'whos';                        {   0x77686f73   }
  123.     typeWhoseRange                = 'wrng';                        {   0x77726e67   }
  124.     keyAEWhoseRangeStart        = 'wstr';                        {   0x77737472   }
  125.     keyAEWhoseRangeStop            = 'wstp';                        {   0x77737470   }
  126.     keyAEIndex                    = 'kidx';                        {   0x6b696478   }
  127.     keyAETest                    = 'ktst';                        {   0x6b747374   }
  128.  
  129. {
  130.     used for rewriting tokens in place of 'ccnt' descriptors
  131.     This record is only of interest to those who, when they...
  132.     ...get ranges as key data in their accessor procs, choose
  133.     ...to resolve them manually rather than call AEResolve again.
  134. }
  135.  
  136. TYPE
  137.     ccntTokenRecordPtr = ^ccntTokenRecord;
  138.     ccntTokenRecord = RECORD
  139.         tokenClass:                DescType;
  140.         token:                    AEDesc;
  141.     END;
  142.  
  143.     ccntTokenRecPtr                        = ^ccntTokenRecord;
  144.     ccntTokenRecHandle                    = ^ccntTokenRecPtr;
  145. {$IFC OLDROUTINENAMES }
  146.     DescPtr                                = ^AEDesc;
  147.     DescHandle                            = ^DescPtr;
  148. {$ENDC}  {OLDROUTINENAMES}
  149.  
  150. { typedefs providing type checking for procedure pointers }
  151. {$IFC TYPED_FUNCTION_POINTERS}
  152.     OSLAccessorProcPtr = FUNCTION(desiredClass: DescType; {CONST}VAR container: AEDesc; containerClass: DescType; form: DescType; {CONST}VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT): OSErr;
  153. {$ELSEC}
  154.     OSLAccessorProcPtr = ProcPtr;
  155. {$ENDC}
  156.  
  157. {$IFC TYPED_FUNCTION_POINTERS}
  158.     OSLCompareProcPtr = FUNCTION(oper: DescType; {CONST}VAR obj1: AEDesc; {CONST}VAR obj2: AEDesc; VAR result: BOOLEAN): OSErr;
  159. {$ELSEC}
  160.     OSLCompareProcPtr = ProcPtr;
  161. {$ENDC}
  162.  
  163. {$IFC TYPED_FUNCTION_POINTERS}
  164.     OSLCountProcPtr = FUNCTION(desiredType: DescType; containerClass: DescType; {CONST}VAR container: AEDesc; VAR result: LONGINT): OSErr;
  165. {$ELSEC}
  166.     OSLCountProcPtr = ProcPtr;
  167. {$ENDC}
  168.  
  169. {$IFC TYPED_FUNCTION_POINTERS}
  170.     OSLDisposeTokenProcPtr = FUNCTION(VAR unneededToken: AEDesc): OSErr;
  171. {$ELSEC}
  172.     OSLDisposeTokenProcPtr = ProcPtr;
  173. {$ENDC}
  174.  
  175. {$IFC TYPED_FUNCTION_POINTERS}
  176.     OSLGetMarkTokenProcPtr = FUNCTION({CONST}VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc): OSErr;
  177. {$ELSEC}
  178.     OSLGetMarkTokenProcPtr = ProcPtr;
  179. {$ENDC}
  180.  
  181. {$IFC TYPED_FUNCTION_POINTERS}
  182.     OSLGetErrDescProcPtr = FUNCTION(VAR appDescPtr: AEDescPtr): OSErr;
  183. {$ELSEC}
  184.     OSLGetErrDescProcPtr = ProcPtr;
  185. {$ENDC}
  186.  
  187. {$IFC TYPED_FUNCTION_POINTERS}
  188.     OSLMarkProcPtr = FUNCTION({CONST}VAR dToken: AEDesc; {CONST}VAR markToken: AEDesc; index: LONGINT): OSErr;
  189. {$ELSEC}
  190.     OSLMarkProcPtr = ProcPtr;
  191. {$ENDC}
  192.  
  193. {$IFC TYPED_FUNCTION_POINTERS}
  194.     OSLAdjustMarksProcPtr = FUNCTION(newStart: LONGINT; newStop: LONGINT; {CONST}VAR markToken: AEDesc): OSErr;
  195. {$ELSEC}
  196.     OSLAdjustMarksProcPtr = ProcPtr;
  197. {$ENDC}
  198.  
  199.     OSLAccessorUPP = UniversalProcPtr;
  200.     OSLCompareUPP = UniversalProcPtr;
  201.     OSLCountUPP = UniversalProcPtr;
  202.     OSLDisposeTokenUPP = UniversalProcPtr;
  203.     OSLGetMarkTokenUPP = UniversalProcPtr;
  204.     OSLGetErrDescUPP = UniversalProcPtr;
  205.     OSLMarkUPP = UniversalProcPtr;
  206.     OSLAdjustMarksUPP = UniversalProcPtr;
  207.  
  208. CONST
  209.     uppOSLAccessorProcInfo = $000FFFE0;
  210.     uppOSLCompareProcInfo = $00003FE0;
  211.     uppOSLCountProcInfo = $00003FE0;
  212.     uppOSLDisposeTokenProcInfo = $000000E0;
  213.     uppOSLGetMarkTokenProcInfo = $00000FE0;
  214.     uppOSLGetErrDescProcInfo = $000000E0;
  215.     uppOSLMarkProcInfo = $00000FE0;
  216.     uppOSLAdjustMarksProcInfo = $00000FE0;
  217.  
  218. FUNCTION NewOSLAccessorProc(userRoutine: OSLAccessorProcPtr): OSLAccessorUPP;
  219.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  220.     INLINE $2E9F;
  221.     {$ENDC}
  222.  
  223. FUNCTION NewOSLCompareProc(userRoutine: OSLCompareProcPtr): OSLCompareUPP;
  224.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  225.     INLINE $2E9F;
  226.     {$ENDC}
  227.  
  228. FUNCTION NewOSLCountProc(userRoutine: OSLCountProcPtr): OSLCountUPP;
  229.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  230.     INLINE $2E9F;
  231.     {$ENDC}
  232.  
  233. FUNCTION NewOSLDisposeTokenProc(userRoutine: OSLDisposeTokenProcPtr): OSLDisposeTokenUPP;
  234.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  235.     INLINE $2E9F;
  236.     {$ENDC}
  237.  
  238. FUNCTION NewOSLGetMarkTokenProc(userRoutine: OSLGetMarkTokenProcPtr): OSLGetMarkTokenUPP;
  239.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  240.     INLINE $2E9F;
  241.     {$ENDC}
  242.  
  243. FUNCTION NewOSLGetErrDescProc(userRoutine: OSLGetErrDescProcPtr): OSLGetErrDescUPP;
  244.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  245.     INLINE $2E9F;
  246.     {$ENDC}
  247.  
  248. FUNCTION NewOSLMarkProc(userRoutine: OSLMarkProcPtr): OSLMarkUPP;
  249.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  250.     INLINE $2E9F;
  251.     {$ENDC}
  252.  
  253. FUNCTION NewOSLAdjustMarksProc(userRoutine: OSLAdjustMarksProcPtr): OSLAdjustMarksUPP;
  254.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  255.     INLINE $2E9F;
  256.     {$ENDC}
  257.  
  258. FUNCTION CallOSLAccessorProc(desiredClass: DescType; {CONST}VAR container: AEDesc; containerClass: DescType; form: DescType; {CONST}VAR selectionData: AEDesc; VAR value: AEDesc; accessorRefcon: LONGINT; userRoutine: OSLAccessorUPP): OSErr;
  259.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  260.     INLINE $205F, $4E90;
  261.     {$ENDC}
  262.  
  263. FUNCTION CallOSLCompareProc(oper: DescType; {CONST}VAR obj1: AEDesc; {CONST}VAR obj2: AEDesc; VAR result: BOOLEAN; userRoutine: OSLCompareUPP): OSErr;
  264.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  265.     INLINE $205F, $4E90;
  266.     {$ENDC}
  267.  
  268. FUNCTION CallOSLCountProc(desiredType: DescType; containerClass: DescType; {CONST}VAR container: AEDesc; VAR result: LONGINT; userRoutine: OSLCountUPP): OSErr;
  269.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  270.     INLINE $205F, $4E90;
  271.     {$ENDC}
  272.  
  273. FUNCTION CallOSLDisposeTokenProc(VAR unneededToken: AEDesc; userRoutine: OSLDisposeTokenUPP): OSErr;
  274.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  275.     INLINE $205F, $4E90;
  276.     {$ENDC}
  277.  
  278. FUNCTION CallOSLGetMarkTokenProc({CONST}VAR dContainerToken: AEDesc; containerClass: DescType; VAR result: AEDesc; userRoutine: OSLGetMarkTokenUPP): OSErr;
  279.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  280.     INLINE $205F, $4E90;
  281.     {$ENDC}
  282.  
  283. FUNCTION CallOSLGetErrDescProc(VAR appDescPtr: AEDescPtr; userRoutine: OSLGetErrDescUPP): OSErr;
  284.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  285.     INLINE $205F, $4E90;
  286.     {$ENDC}
  287.  
  288. FUNCTION CallOSLMarkProc({CONST}VAR dToken: AEDesc; {CONST}VAR markToken: AEDesc; index: LONGINT; userRoutine: OSLMarkUPP): OSErr;
  289.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  290.     INLINE $205F, $4E90;
  291.     {$ENDC}
  292.  
  293. FUNCTION CallOSLAdjustMarksProc(newStart: LONGINT; newStop: LONGINT; {CONST}VAR markToken: AEDesc; userRoutine: OSLAdjustMarksUPP): OSErr;
  294.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  295.     INLINE $205F, $4E90;
  296.     {$ENDC}
  297.  
  298.  
  299.  
  300. FUNCTION AEObjectInit: OSErr;
  301. { Not done by inline, but by direct linking into code.  It sets up the pack
  302.   such that further calls can be via inline }
  303. FUNCTION AESetObjectCallbacks(myCompareProc: OSLCompareUPP; myCountProc: OSLCountUPP; myDisposeTokenProc: OSLDisposeTokenUPP; myGetMarkTokenProc: OSLGetMarkTokenUPP; myMarkProc: OSLMarkUPP; myAdjustMarksProc: OSLAdjustMarksUPP; myGetErrDescProcPtr: OSLGetErrDescUPP): OSErr;
  304.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  305.     INLINE $303C, $0E35, $A816;
  306.     {$ENDC}
  307. FUNCTION AEResolve({CONST}VAR objectSpecifier: AEDesc; callbackFlags: INTEGER; VAR theToken: AEDesc): OSErr;
  308.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  309.     INLINE $303C, $0536, $A816;
  310.     {$ENDC}
  311. FUNCTION AEInstallObjectAccessor(desiredClass: DescType; containerType: DescType; theAccessor: OSLAccessorUPP; accessorRefcon: LONGINT; isSysHandler: BOOLEAN): OSErr;
  312.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  313.     INLINE $303C, $0937, $A816;
  314.     {$ENDC}
  315. FUNCTION AERemoveObjectAccessor(desiredClass: DescType; containerType: DescType; theAccessor: OSLAccessorUPP; isSysHandler: BOOLEAN): OSErr;
  316.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  317.     INLINE $303C, $0738, $A816;
  318.     {$ENDC}
  319. FUNCTION AEGetObjectAccessor(desiredClass: DescType; containerType: DescType; VAR accessor: OSLAccessorUPP; VAR accessorRefcon: LONGINT; isSysHandler: BOOLEAN): OSErr;
  320.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  321.     INLINE $303C, $0939, $A816;
  322.     {$ENDC}
  323. FUNCTION AEDisposeToken(VAR theToken: AEDesc): OSErr;
  324.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  325.     INLINE $303C, $023A, $A816;
  326.     {$ENDC}
  327. FUNCTION AECallObjectAccessor(desiredClass: DescType; {CONST}VAR containerToken: AEDesc; containerClass: DescType; keyForm: DescType; {CONST}VAR keyData: AEDesc; VAR token: AEDesc): OSErr;
  328.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  329.     INLINE $303C, $0C3B, $A816;
  330.     {$ENDC}
  331.  
  332. {$ALIGN RESET}
  333. {$POP}
  334.  
  335. {$SETC UsingIncludes := AEObjectsIncludes}
  336.  
  337. {$ENDC} {__AEOBJECTS__}
  338.  
  339. {$IFC NOT UsingIncludes}
  340.  END.
  341. {$ENDC}
  342.